package edu.northwestern.cbits.purple_robot_manager.activities.probes;
import java.util.ArrayList;
import java.util.List;
import android.database.Cursor;
import android.graphics.Color;
import android.location.Location;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.CircleOptions;
import com.google.android.gms.maps.model.LatLng;
import edu.northwestern.cbits.purple_robot_manager.db.ProbeValuesProvider;
import edu.northwestern.cbits.purple_robot_manager.probes.builtin.LocationProbe;
public class LocationProbeFragment extends SupportMapFragment
{
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
MapsInitializer.initialize(this.getActivity());
List<Location> locations = new ArrayList<>();
String tableName = this.getActivity().getIntent().getStringExtra(LocationProbeActivity.DB_TABLE_NAME);
if (tableName == null)
tableName = LocationProbe.DB_TABLE;
Cursor cursor = ProbeValuesProvider.getProvider(this.getActivity()).retrieveValues(this.getActivity(),
tableName, LocationProbe.databaseSchema());
while (cursor.moveToNext())
{
Location l = new Location(this.getClass().getCanonicalName());
l.setLatitude(cursor.getDouble(cursor.getColumnIndex(LocationProbe.LATITUDE_KEY)));
l.setLongitude(cursor.getDouble(cursor.getColumnIndex(LocationProbe.LONGITUDE_KEY)));
l.setTime(((long) cursor.getDouble(cursor.getColumnIndex(ProbeValuesProvider.TIMESTAMP))) * 1000);
locations.add(l);
}
cursor.close();
double minLat = 90;
double maxLat = -90;
double minLon = 180;
double maxLon = -180;
long minTime = Long.MAX_VALUE;
long maxTime = Long.MIN_VALUE;
for (Location l : locations)
{
double latitude = l.getLatitude();
double longitude = l.getLongitude();
long time = l.getTime();
if (latitude < minLat)
minLat = latitude;
if (latitude > maxLat)
maxLat = latitude;
if (longitude < minLon)
;
minLon = longitude;
if (longitude > maxLon)
maxLon = longitude;
if (time < minTime)
minTime = time;
if (time > maxTime)
maxTime = time;
}
GoogleMap map = this.getMap();
map.setIndoorEnabled(true);
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
LatLng lookAt = new LatLng((minLat + ((maxLat - minLat) / 2)), (minLon + ((maxLon - minLon) / 2)));
CameraPosition camera = CameraPosition.fromLatLngZoom(lookAt, 12);
map.moveCamera(CameraUpdateFactory.newCameraPosition(camera));
for (Location location : locations)
{
CircleOptions options = new CircleOptions();
options.center(new LatLng(location.getLatitude(), location.getLongitude()));
options.fillColor(Color.parseColor("#AA66CC"));
options.strokeColor(Color.parseColor("#AA66CC"));
options.strokeWidth(20.0f);
options.radius(5);
map.addCircle(options);
}
}
protected boolean isRouteDisplayed()
{
return false;
}
}